package com.jsoft.util;

import com.jsoft.dao.VoucherDao;
import com.jsoft.dao.impl.VoucherDaoImpl;
import com.jsoft.entity.Voucher;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

/**
 * @author:sha
 * @email:o68o4741@163.com
 * @date:2023/2/20
 */
public class CheckNo {
    private static SetNo setNo = new SetNo();
    public static String getVouNo()throws Exception{
        VoucherDao voucherDao = new VoucherDaoImpl();
        Voucher voucher = new Voucher();
        /**
         * 拿到今天的日期字符串
         */
        Date date = new Date();
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
        String formatDate = dateFormat.format(date);
        /**
         * 拿到数据库transfer表里按"no"降序的第一个数据 ，并截取出标识日期的那部分
         */
        List<Voucher> vouchers = voucherDao.listVoucherNo();
        /**
         * dataNo:数据库transfer表中倒叙第一个no
         */
        String dataNo = vouchers.get(0).getNo();
        String dataNoFormat = dataNo.substring(1, 9);

        /**
         * 判断两者是否相等，相等说名今天已经创建过数据，不相等说明今天没创建过数据。
         */
        if (!dataNoFormat.equals(formatDate)) {

            /**
             * System.out.println("formatDate："+formatDate+"和dataNoFormat："+dataNoFormat+"不相等！").
             * 不相等则创建一个字符串，按照格式从000001开始.
             */
            StringBuilder s = new StringBuilder();
            StringBuilder firstNo = s.append("Z").append(formatDate).append("000001");

            return firstNo.toString();
        } else {
            /**
             *System.out.println("它俩相等")。
             * 调用工具类SetNo中的addNo方法让它末尾加一
             */
            String s1 = setNo.addNo(dataNo);
            return s1;
        }

    }
}
